/*
 * MazePrototypeFactory.h
 *
 *  Created on: Jan 11, 2013
 *      Author: quanpv
 */

#ifndef MAZEPROTOTYPEFACTORY_H_
#define MAZEPROTOTYPEFACTORY_H_

#include "MazeFactory.h"

class MazePrototypeFactory: public MazeFactory {
public:
	MazePrototypeFactory(boost::shared_ptr<Maze>, boost::shared_ptr<Wall>, boost::shared_ptr<Room>, boost::shared_ptr<Door>);
	virtual ~MazePrototypeFactory();

	virtual boost::shared_ptr<Maze> MakeMaze() const;
	virtual boost::shared_ptr<Room> MakeRoom(int) const;
	virtual boost::shared_ptr<Wall> MakeWall() const;
	virtual boost::shared_ptr<Door> MakeDoor(boost::shared_ptr<Room>, boost::shared_ptr<Room>) const;

private:
	boost::shared_ptr<Maze> _prototypeMaze;
	boost::shared_ptr<Room> _prototypeRoom;
	boost::shared_ptr<Wall> _prototypeWall;
	boost::shared_ptr<Door> _prototypeDoor;
};

#endif /* MAZEPROTOTYPEFACTORY_H_ */
